<?php 
namespace Home\Controller;
use HDPHP\Library\Controller;

/*
 * 前台公共控制器->继承主控制器
 */
 
class CommonController extends Controller{
	
	//顶部导航分类数据
	public function TopMenu(){
		//获得分类
		$cateData =M()->query("SELECT * FROM hd_category WHERE pid=0");
//		z($cateData); //分类集合
		foreach ($cateData as $key => $value) {
			// 找到子集，重新压入数组
			$cateData[$key]['son']=M()->query("SELECT * FROM hd_category WHERE pid={$value['cid']}");
		}
		$this->assign('cateData',$cateData);
	}
	//面包屑导航
	public function TopNav(){
		//获取分类的子集
	$cid =isset($_GET['cid'])?(int)$_GET['cid']:NULL;
//	$cid =(int)$_GET['cid'];
		/*
	 * 面包屑开始
	 */
	 $cateData =M()->query("SELECT * FROM hd_category");
	 //寻找父级
	 $fatherCate=$this->_getFater($cateData,$cid);
	 //数组反转
	 $fatherCate=array_reverse($fatherCate);
//	 z($fatherCate);
	 //把变量输出到页面
	 $this->assign('fatherCate',$fatherCate);
	//导航分类获得分类
		$cateData =M()->query("SELECT * FROM hd_category WHERE pid=0");
//		z($cateData); //分类集合
		foreach ($cateData as $key => $value) {
			// 找到子集，重新压入数组
			$cateData[$key]['son']=M()->query("SELECT * FROM hd_category WHERE pid={$value['cid']}");
		}
		$this->assign('cateData',$cateData);
		
		
	}
	/*
	 * 找到分类cid的父级 类方法 面包屑递归
	 */
	 private function _getFater($cateData,$cid){
	 	// 设置一个空数组
	 	$temp =array();
		//循环传入进来的数据
		foreach ($cateData as $v){
			//如果循环的数据父级值 等于传入过来的$cid
			if($v['cid'] == $cid){
				//给$temp 空数组压入一条父级的数据
				$temp[]=$v;
				//合并同父级的数组得到一个父级的集合数组
				$temp =array_merge($temp,$this->_getFater($cateData, $v['pid']));
			}
		}
		
		//返回父级集合的数组
		return $temp;
	 }
	 //统计提问总数
	public function AskCount(){		
		$AskCouSql="SELECT count(*) AS c FROM hd_ask";
		$AskCou =M()->query($AskCouSql);
		$AskCou =$AskCou[0];		
		$this->assign('AskCou', $AskCou);
//		z($AskCou);
		
	}
	
	//右侧公共部分 数据推送
	public function IndexRight(){
		
		if(isset($_SESSION['uid']) && isset($_SESSION['uname'])){
		//获取用户数据表
			$uid = $_SESSION['uid'];
			$uname =$_SESSION['uname'];
			$usql="SELECT * FROM hd_user WHERE uid={$uid}";
			$uData=M()->query($usql);
			$uData=$uData[0];
			$this->assign('uData',$uData);
//			z($uData);
		}
		//本日回答问题最多的人
		
//		零点时间戳 strtotime//把时间格式转换成时间戳格式
		$zero = strtotime(date('Y-m-d'));
		$sql = "SELECT count(*) AS c,uid FROM hd_answer WHERE time>{$zero} GROUP BY uid ORDER BY c DESC LIMIT 1";
		$dayStar = M()->query($sql);
//		z($dayStar);die;
        if(!empty($dayStar)){
           $dayStar=$dayStar[0];
            //获得今日发布最多问题的人的uid
            $maxuid=$dayStar['uid'];
            //通过uid查询用户表得到最多人的用户数据
            $maxuidsql ="SELECT * FROM hd_user WHERE uid={$maxuid}";
            $maxuidData=M()->query($maxuidsql);
            $maxuidData=$maxuidData[0];
            //分配当日发布最多的人的数据到前台
            $this->assign('maxuidData',$maxuidData);
    //      z($maxuidData);
            //分配发布最多的人的帖子数量和uid到前台
            $this->assign('dayStar',$dayStar); 
        }
		
//		z($dayStar);
		//历史回答问题最多的人
		//获得从每天0点开始前一天发帖最多的人，1天一更新历史
		$HisAsk=strtotime(date('Y-m-d'));
		//查询从当前时间
		$HisAsksql="SELECT count(*) AS c,uid FROM hd_answer WHERE time<{$HisAsk} GROUP BY uid ORDER BY c DESC LIMIT 1";
		$HisAskData=M()->query($HisAsksql);
        if(!empty($HisAskData)){
           //分配当日发布最多的人的数据到前台 
           $HisAskData = $HisAskData[0];
           $HisAskid =$HisAskData['uid'];
           //分配历史前一天发布最多的人的数据到前台
           $this->assign('HisAskData',$HisAskData);
//         z($HisAskData);
           //通过uid查询历史前一天发布最多的人的用户数据
           $HisAsksql ="SELECT * FROM hd_user WHERE uid={$HisAskid}";
           $HisAskData=M()->query($HisAsksql);
//         var_dump($HisAskData);die;
           $HisAskData=$HisAskData[0];
        }
		//分配当日发布最多的人的数据到前台
		$this->assign('HisAskData',$HisAskData);
		//后盾回答助人榜，查询回帖最多的用户前3名
		$answersql="SELECT * FROM hd_user ORDER BY answer DESC LIMIT 3";
		$answerData=M()->query($answersql);
		$this->assign('answerData', $answerData);
//		z($answerData);
	}
	
	//退出方法
	public function out(){		
		session_unset();
		session_destroy();
		$this->success('退出成功','index.php');
	}
	//验证码方法
	public function code(){
		$code = new \HDPHP\Tool\Code();
		$code->show();
	}
	
}
